// 引入SDK核心类
import QQMapWX from '../../utils/qqmap-wx-jssdk1.2/qqmap-wx-jssdk';

// 实例化API核心类
const qqmapsdk = new QQMapWX({
    key: 'W4UBZ-7VPKL-JMQPS-MGVTF-WGLT7-NLFNU' // 必填
});

Page({
    data: {
        dstLat: 36.26, // 泰山的纬度
        dstLng: 117.11, // 泰山的经度
        latitude: '',
        longitude: '',
        polyline: []
    },
    onLoad() {
        // 获取当前位置
        wx.getLocation({
            type: 'wgs84',
            success: (res) => {
                const currentLat = res.latitude;
                const currentLng = res.longitude;

                // 调用距离计算接口
                qqmapsdk.direction({
                    mode: 'driving', // 可选值：'driving'（驾车）、'walking'（步行）、'bicycling'（骑行），不填默认：'driving',可不填
                    from: {
                        latitude: currentLat,
                        longitude: currentLng
                    },
                    to: {
                        latitude: this.data.dstLat,
                        longitude: this.data.dstLng
                    },
                    success: (res) => {
                        console.log(res);
                        // 边界情况处理
                        if (!res.result ||!res.result.routes || res.result.routes.length === 0) {
                            wx.showToast({
                                title: '未获取到有效路线，请检查起点和终点',
                                icon: 'none'
                            });
                            return;
                        }
                        const coors = res.result.routes[0].polyline;
                        const pl = [];
                        // 坐标解压（返回的点串坐标，通过前向差分进行压缩）
                        const kr = 1000000;
                        for (let i = 2; i < coors.length; i++) {
                            coors[i] = Number(coors[i - 2]) + Number(coors[i]) / kr;
                        }
                        // 将解压后的坐标放入点串数组pl中
                        for (let i = 0; i < coors.length; i += 2) {
                            pl.push({ latitude: coors[i], longitude: coors[i + 1] });
                        }
                        console.log(pl);
                        // 设置polyline属性，将路线显示出来,将解压坐标第一个数据作为起点
                        this.setData({
                            latitude: pl[0].latitude,
                            longitude: pl[0].longitude,
                            polyline: [{
                                points: pl,
                                color: '#FF0000DD',
                                width: 4
                            }]
                        });
                    },
                    fail: (error) => {
                        console.error(error);
                        let errorMsg = '路线请求失败，请稍后重试';
                        // 根据不同错误码给出详细信息
                        if (error.errCode === 1000) {
                            errorMsg = '密钥错误，请检查密钥是否正确';
                        }
                        wx.showToast({
                            title: errorMsg,
                            icon: 'none'
                        });
                    },
                    complete: (res) => {
                        console.log(res);
                    }
                });
            },
            fail: (error) => {
                console.error('获取当前位置失败', error);
                wx.showToast({
                    title: '获取当前位置失败，请检查定位权限',
                    icon: 'none'
                });
            }
        });
    }
});